squash commits on branch

87

$ git rebase -i HEAD~4

At the interactive screen that opens up, replace pick with squash at the top for all the commits that you want to squash.
Save and close the editor through esc --> :wq

$ git push origin branch-name --force
git reset --soft HEAD~3 &&
git commit
Another way to squash all your commits is to reset the index to master:

git checkout yourBranch
git reset $(git merge-base master $(git branch --show-current))
git add -A
git commit -m "one commit on yourBranch"
git rebase -i HEAD~20
To modify a commit that is farther back in your history, you must move
to more complex tools. Git doesn’t have a modify-history tool, 
but you can use the rebase tool to rebase a series of commits onto the 
HEAD that they were originally based on instead of moving them to 
another one. With the interactive rebase tool, you can then stop 
after each commit you want to modify and change the message, add files, 
or do whatever you wish. You can run rebase interactively by adding 
the -i option to git rebase. You must indicate how far back you want to 
rewrite commits by telling the command which commit to rebase onto.

For example, if you want to change the last three commit messages, 
or any of the commit messages in that group, you supply as an argument 
to git rebase -i the parent of the last commit you want to edit, 
which is HEAD~2^ or HEAD~3. It may be easier to remember the ~3 
because you’re trying to edit the last three commits, but keep in 
mind that you’re actually designating four commits ago, the parent 
of the last commit you want to edit:

$ git rebase -i HEAD~3

Remember again that this is a rebasing command — every commit in the
range HEAD~3..HEAD with a changed message and all of its descendants
will be rewritten. Don’t include any commit you’ve already pushed to
a central server — doing so will confuse other developers by providing
an alternate version of the same change.

Running this command gives you a list of commits in your text editor
that looks something like this:

```
pick f7f3f6d Change my name a bit
pick 310154e Update README formatting and add blame
pick a5f4a0d Add cat-file

```

If, instead of “pick” or “edit”, you specify “squash”, Git applies 
both that change and the change directly before it and makes you 
merge the commit messages together. So, if you want to make a single 
commit from these three commits, you make the script look like this:

```
pick f7f3f6d Change my name a bit
squash 310154e Update README formatting and add blame
squash a5f4a0d Add cat-file

```



When you save and exit the editor, Git applies all three changes and 
then puts you back into the editor to merge the three commit messages:
 
```

# This is a combination of 3 commits.
# The first commit's message is:
Change my name a bit

# This is the 2nd commit message:
Update README formatting and add blame

# This is the 3rd commit message:
Add cat-file

```
When you save that, you have a single commit that introduces the changes
of all three previous commits.

Comments

Submit
0 Comments

More Questions

run typescript nodecheck if file exists bash tsc install command
create react project with typescriptgoogle fonts roboto Cant bind to formGroup since it isnt a known property of form
cannot find module typescripthow to run typescript file Warning: Cant perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in a useEffect cleanup function.
for loop typescript[email protected]: Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. cannot be loaded because running scripts is disabled on this system
ts-node call function from command lineinstall typescript global how to install typescript in visual studio code
install typescript using npmhow to see all commits in git yarn create react app typescript
how to run typescriptbootstrap add angular command installing bootstrap in angular 9
angular date pipehow check is file exist linux File C:-Users-Tariqul-AppData-Roaming-npm-ng.ps1 cannot be loaded because running scripts is disabled on this system.
spade operator typescripthow to check whether file exists in python useref react typescript
mat datepicker pt-brhow to edit unity scripts in sublime text ex: javascript loop
HOW TO DROP ALL TABLES WITH THEIR CONSTRAINTS AT ONCE IN ORACLEgithub:Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.5.1, expected version is 1.1.15 in android democrats are pussies
Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.5.1, expected version is 1.1.16how to get all elements of column in pandas dataframe getserversideprops
cannot be loaded because running scripts is disabled on this system vscodeformControl Server Side rendering button routing in angular
find duplicate values in array object javascriptionic pasword visible inside ion-input get date list from date of range in react ts
UpdateTable operation with the GlobalSecondaryIndexUpdates parametertypescript Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client mysql insert exists update
loop an object properties in tsdefining component layout next ts react-native-vector-icons